package q2;

import q1.Pessoa;

public class RepositorioPessoas implements InterfaceRepositorio {

	private Pessoa[] pessoas;
	private int cont;

	public RepositorioPessoas() {
		pessoas = new Pessoa[2];
		cont = 0;
	}

	@Override
	public void adicionar(Object o) {
		Pessoa p = (Pessoa) o;

		if (cont == pessoas.length) {
			dobrarArray();
		}

		pessoas[cont] = p;
		cont++;
	}

	private void dobrarArray() {
		Pessoa[] temp = new Pessoa[cont * 2];
		for (int i = 0; i < cont; i++) {
			temp[i] = pessoas[i];
		}
		pessoas = temp;
	}

	@Override
	public void remover(Object o) {
		Pessoa p = (Pessoa) o;

		int i = 0;
		while (i < cont && !pessoas[i].getNome().equals(p.getNome())) {
			i++;
		}

		if (i < cont) {
			for (int j = i; j < cont - 1; j++) {
				pessoas[j] = pessoas[j + 1];
			}
			cont--;
		}
	}

	@Override
	public Pessoa buscar(String key) {
		int i = 0;
		while (i < cont && !pessoas[i].getNome().equals(key)) {
			i++;
		}

		if (i < cont) {
			return pessoas[i];
		} else {
			return null;
		}
	}

	@Override
	public boolean verificar(Object o) {
		Pessoa p = (Pessoa) o;

		int i = 0;
		while (i < cont && !pessoas[i].getNome().equals(p.getNome())) {
			i++;
		}

		if (i < cont) {
			return true;
		}

		return false;
	}

	@Override
	public void atualizar(Object o) {
		Pessoa p = (Pessoa) o;

		int i = 0;
		while (i < cont && pessoas[i].getNome().equals(p.getNome())) {
			i++;
		}
		if (i < cont) {
			pessoas[i].setIdade(p.getIdade());
			pessoas[i].setLimiteAlcoolico(p.getLimiteAlcoolico());
			pessoas[i].setOpcaoSexual(p.getOpcaoSexual());
			pessoas[i].setRange(p.getRange());
		}
	}

}
